Rstudio est l’Environnement de Développement Intégré très majoritairement employé par les utilisateurs du langage R.
Dans son layout par défaut, lorsqu’un script est ouvert, 4 containers permettent de monitorer les différents aspects d’un projet ou d’analyses.
Leur positionnement et leur présence peuvent être paramétrés dans les options avancées.
Dans chaque container, différents onglets permettent d’accéder aux fonctionnalités proposées.
Rédaction de scripts
Edition de scripts dans différents onglets, visualisation de leur structure
Possibilité d’ouverture de scripts dans différentes fenêtres
Compilation de scripts, génération de rapports, options personalisées suivant la nature du document
Console
Console R : exécution et affichage de la sortie des commandes
Terminal du système (monitorat de l’utilisation mémoire, git en ligne de commande, etc)
Mode bebug (breakpoints, navigation dans les appels de fonction)
Logs des compilations de Rmarkdown
Environnement
Liste des variables de l’environnement : aperçu des dataframes, listes, vecteurs…
Sauvegarde de l’environnement de travail
Connexion à une base de données
Historique des commandes exécutées
Interface pour git
Fichiers et apperçus graphiques
Navigateur de fichiers, setting du répertoire de travail
Affichage des graphiques générés par le code et de leur historique
Liste des packages installés et loadés dans la session courante
Documentation des packages installés
Aperçu de documents html
Beaucoup de paramètres sont accessibles à l’utilisateur dans les options globales de RStudio pour l’édition du code, l’apparence de l’interface, le lien avec le terminal ou git, la compilation de Rmarkdown…
Des raccourcis claviers existent pour la majorité des actions, la liste étant disposnible avec Alt+Shift+K ou Option+Shift+K. Des raccourcis personalisés peuvent être créés.
Travaillez sous le format “Projet” pour la gestion automatique des répertoires de travail, des environnements, etc
RStudio peut être agrémenté d’Addins, des extensions constituant des aides pour des tâches de programmation. Par exemple : un color picker, une interface pour ggplot2, une aide à la citation de références, des code organizers… Voici La liste des plus utilisés
User et abuser de l’autocomplétion lors de l’écriture de scripts (nom de fonctions, arguments de fonctions, variables…)
Obtenez de l’aide sur n’importe quelle fonction dans la console avec ?, par exemple ?ggplot.
Plusieurs sessions R indépendantes peuvent être lancées simultanément (travail en parallèle, ou dans différents projets)
RStudio s’intègre avec Git et le développement de packages avec des onglets spécifiques dans la composante en haut à droite
Une cheat-sheet très complète sur l’interface RStudio : https://raw.githubusercontent.com/rstudio/cheatsheets/master/rstudio-ide.pdf
La communauté des utilisateurs de R/RStudio est très active et développée : https://community.rstudio.com/ est un forum d’échange et d’aide aux développeurs. Des groupes comme RWeekly, SatRdays, effectuent des conférences régulièrement et communiquent sur les réseaux sociaux, sur les nouveautés liées à R.
Rmarkdown est une syntaxe permettant la rédaction de documents HTML, PDF, Word, de slides, parmi d’autres formats. Il est possible d’y inclure du code R et ses sorties, en les encapsulant dans un rapport en markdown structuré, accompagné de description et d’interprétations textuelles, de liens, d’images…
Ce format permet la communication de méthodes et de résultats de manière claire et commentée, particulièrement à des non spécialistes de l’informatique ou des statistiques.
La reproductibilité des analyses est garantie, car le code ayant généré les résultats montrés est présent, et peut être réexécuté par toute personne possédant le document.
L’édition de Rmarkdown se fait généralement sous RStudio, qui propose une interface de Notebook, permettant d’exécuter les chunks de code R souhaités, tout en rédigeant la partie textuelle en markdown.
Pour créer le document fini, on utilise le bouton Knit. Le logiciel knitr est alors utilisé pour créer un document markdown contenant le code et ses sorties, avec le reste du texte, puis le logiciel pandoc se charge de donner au document son format et apparence finale (html, pdf…).
Rmarkdown workflow.
---
title: "L'IDE RStudio et l'édition de documents Rmarkdown"
author: "Océane Cassan - oceane.cassan@cnrs.fr"
date: "08/31/2020"
output:
html_document:
theme: united
number_sections: true
highlight: breezedark
---include = FALSE ne fait pas apparaître le code ni les résultats dans le document fini. echo = FALSE montre les sorties du code mais pas le code lui même. fig.cap = "Ma figure" attribue la légende désirée à une figure générée par le chunk.Généralement, le premier chunk contient la fonction knitr::opts_chunk$set(echo = TRUE), qui peut être utilisée pour préciser des paramètres qui seront utilisés pour tous les chunks du document.
Toutes les options de chunks sont décrites dans la documentation de Rmarkdown.
La syntaxe de Rmarkdown dont vous allez avoir besoin par la suite est dans cette cheat sheet, vous pouvez garder ce document ouvert au cours du TP.
Maintenant, à vous de générer un rapport d’analyses. L’idée est de générer un rapport identique à celui- ci pour illustrer les fonctionnalités de Rmarkdown.
Tout d’abord, nous aurons besoin de certains packages. Assurez-vous de leur installation avant de commencer. Pou cela, dans la console R, exécutez la commande suivante qui fera les installations des packages manquants uniquement :
packages <- c("ggplot2", "ggpubr", "gglm", "equatiomatic", "papeR", "knitr", "plotly")
install.packages(setdiff(packages, rownames(installed.packages()))) Informations sur les packages
ggplot2 : visualisation de données
ggpubr : extensions à ggplot pour des graphes prêts à la publication
equatiomatic : donne la formule d’un modèle de régression en formule latex
papeR : formate des résultats de summary de modèles de régression
gglm : graphes des résidus d’un modèle de régression
knitr : outils pour la compilation de documents Rmd
plotly : makes ggplot graphs interactive
Ouvrez RStudio et créez un nouveau projet (File/New Project…/New Directory). Choisissez un emplacement et créez votre projet. A la racine du projet, créez un folder “data”, dans lequel vous devez télécharger les données que nous allons utiliser aujourd’hui.
Créez un nouveau document Rmarkdown qui sera votre script de TP, via le menu File/New file/R Markdown (acceptez les éventuelles mises à jour). Laissez l’option HTML par défaut. Comme vous le constatez, RStudio propose déjà un petit template d’exemple fonctionnel de Rmarkdown. Vous pouvez le sauvegarder et le compiler avec le bouton Knit en haut de panel du script. Inspectez le résultat obtenu, ainsi que le code l’ayant généré.
Personnalisez l’entête YAML (auteur, titre, date…).
Le premier chunk de setup doit être conservé. Rajoutez-y l’import des packages que nous allons utiliser. Il doit donc maintenant contenir :
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
library(ggpubr)
library(equatiomatic)
library(papeR)
library(gglm)
library(plotly)Nous continuerons de le modifier plus tard dans l’énoncé. Exécutez ce chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter.
La suite du template peut être supprimée.
Au cours des étapes suivantes, utilisez régulièrement Knit pour compiler et visualiser le rendu du document. Vous pouvez également prendre l’habitude de copier le texte des questions de l’énoncé dans les parties markdown de votre rapport pour re-contextualiser le code contenu des chunks.
Créez une première section nommée “Contexte” (# Contexte) et rappelez l’objectif du document (vous familiariser avec Rmarkdown). Vous pouvez également parler des données que nous allons utiliser comme base de notre démonstration : Les données analysées sont issues d’une publication intitulée “Fluctuating, warm temperatures decrease the effect of a key floral repressor on flowering time in Arabidopsis thaliana” de 2015.
Dans ces données, plusieurs génotypes d’Arabidopsis thaliana, une plante modèle, ont été phénotypés (leurs caractéristiques morphologiques, leur réponse à l’environnement, ont été mesurés).
Dans le premier chunk de votre document ( Créez un chunck avec Ctrl + Alt + I, ou sous OS X: Cmd + Option + I), vous pouvez loader le jeu de données ainsi :
data <- read.csv("data/burghardt_et_al_2015_expt1.csv")
dim(data)
head(data)La fonction dim donne les dimensions du dataframe, et head donne un perçu de ses premières lignes.
Exécutez un chunk avec la petite flèche verte en haut à droite, ou avec Ctrl+Shift+Enter. Après exécution, un objet data est apparu dans votre environnement RStudio. Vous pouvez l’inspecter avec la commande View(data) dans la console.
paged des dataframesPour améliorer le rendu des dataframes (comme ce que renvoie la fonction head, on va utiliser l’option d’affiche paged dans la partie YAML. Inspirez vous de cette entête :
---
title: "Visualisation et analyse de données de biologie végétale"
output:
html_document:
df_print: paged
---Ajoutez l’option et re-compilez pour vérifier le résultat sur la sortie de head.
Créez une section Visualisation.
Créez ensuite une sous-section ## Simple visualisation.
Nous allons ici représenter le nombre de jours jusqu’à floraison pour les différents génotypes, durée de jours (qui peuvent être contrôlés dans des chambres artificielles), et la température de culture. Voici le code à utiliser pour réaliser le graphique, utilisant la librairie ggplot2 :
data$temperature <- factor(data$temperature)
data$day.length = factor(data$day.length)
ggplot(data, aes(x = factor(temperature),
y = days.to.flower,
color = genotype )) +
geom_jitter(color = "black")+
geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
facet_grid(day.length~genotype) +
xlab("Temperature")Exécutez le chunk, et compilez le document avec Knit.
L’image est de taille assez petite. De manière globale à tout le document, demandez des images de hauteur 8 et de largeur 12. Pour cela, ajoutez des paramètres fig.width et fig.height à knitr::opts_chunk$set(echo = TRUE) dans le premier chunk.
Recompliez le document pour vérifier que le changement de taille a bien eu lieu.
Vous pouvez aussi décrire le graphe et l’interpréter dans la partie markdown.
On constate qu’une température plus élevée aura tendance à diminuer le temps nécessaire à la floraison. Il s’agit ici de reproduire le même graphe mais en se demandant si les durées jusqu’à floraison sont significativement impactées par la température. La fonction stat_compare_means du package ggpubr permet de rajouter un test de comparaison de moyennes (ici non paramétrique, le wilcox.test). Pour plus d’informations sur la fonctions, tapez ?stat_compare_means dans la console.
Créez une sous-section ## Visualisation avec tests statistiques
Ajoutez en dessous un nouveau chunk contenant :
comparisons <- list(c("12", "22"))
ggplot(data, aes(x = temperature,
y = days.to.flower,
color = genotype )) +
geom_jitter(color = "black")+
geom_boxplot(aes(fill = genotype), alpha = 0.3, size = 1) +
facet_grid(day.length~genotype) +
xlab("Temperature") +
stat_compare_means(comparisons = comparisons, label = "p.signif")Nous allons maintenant faire comme dans ce sujet de TP et positionner chacune des sous-sections dans deux onglets. Pour cela, il suffit de spécifier des options à la section supérieure # Visualisation, qui devient # Visualisation {.tabset .tabset-fade}
Compilez et inspectez le résultat.
On va expliquer le nombre de feuilles d’une plante au moyen du temps qu’elle a mis a fleurir, et de la longueur des jours lors de la culture. Dans une nouvelle section, expliquez l’objectif et affichez la relation entre le nombre de feuilles et le temps jusqu’à floraison. On distingue les observations réalisées en jours courts ou en jours longs par la couleur:
ggplotly(ggplot(data, aes(x = days.to.flower,
y = rosette.leaf.num,
color = day.length)) + geom_point())Vous remarquez ici que la fonction ggplotly permet de rendre interactif le graphe ggplot.
On réalise la régression au moyen de la fonction lm, puis on extrait et on affiche en syntaxe latex l’équation de ce modèle linéaire :
lm <- lm(data = data, rosette.leaf.num~days.to.flower*day.length)
extract_eq(lm)Compilez pour admirer le rendu de l’équation.
Vérifiez si le modèle linéaire semble correct et interprétable au moyen des graphes sur les résidus (fonction gglm), puis affichez les résultats du modèle dans une table interactive (fonction prettify) :
gglm(lm)
prettify(summary(lm))Concluez sur les résultats du summary quant à l’effet du temps jusqu’à floraison et de la longueur du jour sur le nombre de feuilles (n’oubliez pas la signification du terme d’interaction). Que nous apprend cette régression?
Les données manquantes pour certaines observations et certaines fonctions génèrent des warnings lors de l’exécution du code. Pour qu’ils n’apparaissent pas dans le document final, ajoutez un paramètre global dans le premier chunk spécifiant de ne pas rapporter les warnings ni les messages.
Attention, ne faire ça qu’en fin d’édition, et lorsque l’on est sûr que ces messages et warnings ne sont pas problématiques, ni des informations importantes.
Changez le theme du document dans l’entête YAML. Vous avez le choix entre les thèmes cerulean, cosmo, flatly, journal, lumen, paper, readable, sandstone, simplex, spacelab, united, et yeti, dont un aperçu est disponible ici. Le thème de la coloration syntaxique du code R dans les chunks peut également être changé avec l’option highlight.
Ajoutez une référence bibliographique pour référencer la publication relative aux données analysées. Vous pouvez procéder comme suit :
Téléchargez le fichier contenant les informations de la référence (format .bib) et placez le dans le folder data du projet.
Ajouter dans l’entête YAML un champs bibliography: data/biblio.bib Comme dans cet exemple:
---
title: "Visualisation et analyse de données de biologie végétale"
output:
html_document:
theme: united
bibliography: ./data/biblio.bib
---Citez cette référence dans votre section contexte comme suit: [@Burghardt2015].
Ajoutez une dernière section # Références vide à la fin du document, car les références sont automatiquement ajoutées en fin de document. Recompilez et pour vérifier que la référence apparaît bien en fin de document, et qu’elle est bien référencée à l’endroit du contexte ou vous la citez.
Plus de détails sur les sont disponibles ici.
A work by Océane Cassan
PhD student in biostatistcics and bioinformatics